// import WxRequest from './request'
import WxRequest from 'mina-request'
//导入封装的本地存储操作模块
import { getStorage,clearStorage } from './storage'
//导入封装的提示模块
import { toast,modal } from './extendApi'
import{env} from './env.js'
const instance = new WxRequest({
  baseURL: env.baseURL,
  timeout: 15000,
//   isLoading:false,//如果所有接口都不想使用loading
})


// 添加请求拦截器 (在请求发送之前对请求参数进行新增或者修改)
instance.interceptors.request = (config) => {
  // 在实际开发中，有一些接口需要使用访问令牌 token
  // 访问令牌 token 通常是存储到本地
  // 需要先从本地获取到存储的 token
  const token = getStorage('token')

  // 如果本地存在 token，这时候就需要在请求头中添加 token 字段
  if (token) {
    config.header['token'] = token
  }

  // 在发送请求之前做些什么
  return config
}
// 添加响应拦截器 (在服务器响应数据以后，对返回的数据进行逻辑处理)
instance.interceptors.response = async(response)=>{
      // 从 response 对象中解构两个数据
  const { isSuccess, data } = response
  // 如果 isSuccess = false，说明网络出现了问题
  if(!isSuccess){
    toast({
        title:'网络异常请重试',
    })
    return Promise.reject(response)
  }

  //根据后端返回的业务状态码进行判断
  switch(data.code){
    // 接口调用成功，服务器成功返回了数据，只需要将数据简化以后返回即可
    case 200:
        return data
        //兼容mock
    case 201:
          return data
    case 208:
        const res = await modal({
            content:'鉴权失败，请重新登录',
            showCancel:false,
        })
        if(res){
            // 既然用户需要重新进行登录，就需要把之前用户存储的信息(过期的 token) 进行清除
            clearStorage()
            wx.navigateTo({
                url:'/pages/login/login'
            })
        }
        return Promise.reject(response)
    default:
        toast({
            title: '程序出现异常，请联系客服或稍后重试！'
        })
      return Promise.reject(response)
  }   
}

export default instance